#ifndef BST_H
#define BST_H
#include <stdbool.h>
#include <myheader.h>
#include <stdio.h>
typedef int KeyType;
typedef struct node{
    KeyType key;
    struct node *left;
    struct node *right;
}TreeNode;

typedef struct{
    TreeNode*root;
}BST;
//创建一个空的BST
BST*bst_create();
//销毁一课树
void bst_destroy(BST*tree);

//垦局key插入一个新的结点
bool bst_insert(BST*tree,KeyType key);

//根据Key搜索某个结点返回
TreeNode *bst_search(BST*tree,KeyType key);

//根据key删除一个结点
bool bst_delete(BST*tree,KeyType key);

//深度有限-先序遍历
void bst_preorder(BST*tree);

//深度优先-中序遍历
void bst_inorder(BST*tree);

//深度有限-后序遍历
void bst_postorder(BST*tree);

//广度有限-层次遍历
void bst_levelorder(BST*tree);

#endif

